package edu.hubu.supermarketmanagementsystem.service;


import edu.hubu.supermarketmanagementsystem.entity.Admin;
import edu.hubu.supermarketmanagementsystem.vo.ResultVO;

public interface AdminService {



    ResultVO<String> checkUsername(String username);

    /**
     * 用于注册用户。
     * @param username 用于注册的用户名。
     * @param password 用于注册的密码。
     * @param name 用户的姓名。
     * @param telephone 用户的电话号码。
     * @param role 用户的角色。
     * @return 带有信息的<code>ResultVO</code>对象。
     */
    ResultVO<String> register(String username, String password, String name, String telephone, String role);

    /**
     * 用于用户登录。
     * @param username 输入的用户名。
     * @param password 输入的密码。
     * @return 所查询到的用户的实体。
     */
    ResultVO<Admin> login(String username, String password);

    /**
     * 获取当前所有用户的基本信息。
     * @return 带有所有用户基本信息的上下文实体。
     */
    ResultVO<Admin[]> getUserList();

    /**
     * 更改用户的基本信息。
     * @param id 待更改信息的用户ID。
     * @param newUsername 新用户名。
     * @param newName 新姓名。
     * @param newTelephone 新电话号码。
     * @param newRole 新角色。
     * @return 如果成功则返回真，失败返回假。
     */
    ResultVO<Boolean> updateUser(Integer id, String newUsername, String newName, String newTelephone, String newRole);

    /**
     * 更改用户密码。
     * @param id 待更改密码的用户ID。
     * @param newPassword 新密码。
     * @return 如果成功则返回真，失败返回假。
     */
    ResultVO<Boolean> updatePassword(Integer id, String newPassword);

    /**
     * 删除用户。
     * @param id 待删除用户的ID。
     * @return 如果成功则返回真，失败返回假。
     */
    ResultVO<Boolean> deleteUser(Integer id);

    /**
     * 根据ID查找用户。
     * @param id 待查找的用户ID。
     * @return 如果成功则返回此用户，失败返回null。
     */
    ResultVO<Admin> getUserById(Integer id);
}
